package com.atzly.community.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;

import java.util.Map;
import java.util.UUID;

/**  社区工具类
 * @author zlysimida
 * @date 2021/8/26 - 10:17
 */
public class CommunityUtils {


    public static String randomString(){
        return UUID.randomUUID().toString().replaceAll("-","");
    }

    /**
     * MD5加密算法:
     * 特点一: MD5加密后的密文不可逆,即如果需要破解需要穷举所有可能
     * 再该应用程序中的MD5使用的是 随机生成一个字符串(salt盐也就是后缀随机生成一个5位的字符)+密码
     * 在验证时使用用户输入的密码+salt在生成一个MD5密文与数据库中的数据进行对比
     * MD5加密原理: 512位-> 16个32位子分组 -> 4个128位的散列值
     * 从安全的角度讲，MD5的输出为128位并且使用不同的文件进行加密会得到两个结果
     *
     * @param key
     * @return
     */
    public static String md5(String key){
        if(!StringUtils.isBlank(key)){
            return DigestUtils.md5DigestAsHex(key.getBytes());
        }
        return null;
    }


    public static String JsontoString(int code, String msg, Map<String,Object> date){
        JSONObject json = new JSONObject();
        json.put("code",code);
        json.put("msg",msg);
        if(date != null && !date.isEmpty()){
            for (Map.Entry<String, Object> entry : date.entrySet()) {
                json.put(entry.getKey(),entry.getValue());
            }
        }
        return json.toJSONString();
    }

    public static String JsontoString(int code, String msg){
      return CommunityUtils.JsontoString(code,msg,null);
    }

    public static String JsontoString(int code){
        return CommunityUtils.JsontoString(code,null,null);
    }
}


